package edu.umd.ion.wavemeter.service;

import com.google.gwt.user.client.rpc.IsSerializable;

/**
 * Parameters for dynamic auto exposure. The new exposure is calculated on the server by
 * the DynamicExposureControl class using these parameters.
 * @author pmaunz
 *
 */
public class DynamicExposureParameters extends ServerParameters implements IsSerializable {
	/**
	 *  Maximum possible intensity, a value above means overexposed and
	 *  the exposure time is reduced to ReduceToPercent (which see)
	 */
	public int MaxPossible = 4095;
	/**
	 *  If the maximum of the interferometer pattern is above this threshold, the exposure 
	 *  is adjusted
	 */
	public int MaxAdj = 3500;
	/**
	 *  target maximum of the intensity pattern
	 */
	public int Optimum = 2500;
	/**
	 *  If the maximum pattern intensity is below this threshold the exposure is adjusted
	 */
	public int MinAdj = 2500;
	/**
	 * In case of overexposure the exposure time is reduced to 
	 * Oldexposuretime * ReduceToPercent / 100
	 */
	public int ReduceToPercent = 40;
	/**
	 * Maximum allowed exposure time
	 */
	public int MaxExposure = 100;
	/**
	 * Minimum allowed exposure time
	 */
	public int MinExposure = 1;
	/**
	 * 	Only update the exposure every SkipCount+1 measurement
	 */
	public int SkipCount = 0;
	
	public double SecondInterferometerBalance = 2.0;
}
